#ifndef DOOR_H_
#define DOOR_H_

#define getSign(h,p) ((h)[0]*(p)[0]+(h)[1]*(p)[1]+(h)[2])
/*STRUTTURE*/
#include "vector.h"
#define NUMBER_OF_DOORS 8

#define DOOR_STRIPE 0
#define DOOR_END    0


struct door_t
{
	int dimTot;					/* dimensione totale della porta */
	int openstatus; 			/* indica se la porta e' attualmente aperta o chiusa */
	int changestatus; 			/* indica se e' richiesto un cambio di stato*/
	float  point[2];			/* punto di applicazione della porta*/
	float  dir  [2];			/* direzione lungo la quale si sviluppa la parte, va normalizzata */
	float  *w;					/* descrizione della porta (inutile)*/
	float  size;				/* dimensione della porta*/
};


extern struct door_t doors[NUMBER_OF_DOORS];



void findPlane(float dest[3],float p0[2],float p1[2]);
int acrossDoor(struct door_t* door,float Start[2],float End[2], struct door_t* last_crossed_door);
void drawDoor(struct door_t* door);
void initDoors(struct door_t* doors);
void checkMovement(float Start[2],float End[2], struct door_t* last_crossed_door);



#endif /*DOOR_H_*/
